/*
 * This file is part of DrFTPD, Distributed FTP Daemon.
 *
 * DrFTPD is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * DrFTPD is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with DrFTPD; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.drftpd.slave.diskselection.filter;

/**
 * @author fr0w
 * @version $Id$
 */
public class AssignParser {
	private long _score;

	private int _root;
	
	private boolean _all = false;

	public AssignParser(String s) {
		if (s.equals("all")) {
			_all = true;
			_score = 0;
			return;
		}
		
		boolean positive;
		int pos = s.indexOf("+");

		if (pos != -1) {
			positive = true;
		} else {
			pos = s.indexOf("-");

			if (pos == -1) {
				_score = 0;
				_root = Integer.parseInt(s);
				return;
			}

			positive = false;
		}

		String root = s.substring(0, pos);
		String assign = s.substring(pos + 1);

		_root = Integer.parseInt(root);

		if (assign.equals("remove")) {
			_score = Integer.MIN_VALUE;
		} else {
			_score = Long.parseLong(assign);

			if (!positive) {
				_score = -_score;
			}
		}
	}

	public int getRoot() {
		return _root;
	}

	public long getScore() {
		return _score;
	}

	public String toString() {
		return getClass() + "@" + hashCode() + "[root=" + getRoot() + ",score="
				+ getScore() + "]";
	}
	
	public boolean allAssigned() {
		return _all;
	}
}
